- [spring6: Mvc-网关]-源码解析
推荐阅读:[spring6:Mvc-函数式编程]-源码解析GatewayServerMvcAutoConfiguration@AutoConfiguration(after={HttpClientAutoConfiguration.class,RestTemplateAutoConfiguration.class,RestClientAutoConfiguration.class,FilterAu
- Flutter权限插件详解:permission_handler使用指南
AI移动开发前沿
AI移动端开发宝典flutterai
Flutter权限插件详解:permission_handler使用指南关键词:Flutter、权限插件、permission_handler、权限管理、移动开发摘要:本文围绕Flutter开发中常用的权限插件permission_handler展开详细介绍。首先阐述了在Flutter应用开发中处理权限的背景和重要性,接着深入解析permission_handler的核心概念、架构以及工作原理,通
- 智能家居平台服务端安装教程——东方仙盟部署
未来之窗软件服务
过去未来疑难破阵录githublinux运维仙盟创梦IDE东方仙盟智能家居
1.准备工作登录阿里云服务器:使用SSH工具(如ssh命令)登录到你的阿里云Linux服务器。确保服务器已安装并能正常运行,且网络连接正常。更新系统软件包:执行以下命令更新系统软件包到最新版本。bashsudoaptupdatesudoaptupgrade-y2.安装依赖HomeAssistant是基于Python的应用,需要安装Python及其相关依赖。bashsudoaptinstall-yp
- Image
小懒豆
Image.asset("images/flutter.png",fit:BoxFit.cover,),Image.network(url):从网络加载显示图片、这里需要传入图片的url,Image.file(file):从本地文件加载显示图片、这里需要传入图片的本地地址Image.asset(name):从FlutterAPP的资源文件里加载显示图片、这里需要传入FlutterAPP图片资源文件
- 音视频流媒体开发【七十四】- WebRTC1-WebRTC入门
AlanGe
音视频流媒体开发-目录iOS知识点-目录Android-目录Flutter-目录数据结构与算法-目录uni-pp-目录1WebRTC入门1.1什么是WebRTCWebRTC(WebRealTimeCommunication)是Google于2010以6829万美元从GlobalIPSolutions公司购买,并于2011年将其开源,旨在建立一个互联网浏览器间的实时通信的平台,让WebRTC技术成为
- 音视频流媒体开发【七十二】- RTSP流媒体7-SDP协议分析
AlanGe
音视频流媒体开发-目录iOS知识点-目录Android-目录Flutter-目录数据结构与算法-目录uni-pp-目录SDP(SessionDescriptionProtocol)完全是⼀种会话描述格式―它不属于传输协议―它只使⽤不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME扩展协议的电⼦邮件以及超⽂本传输协议(HTTP)。SDP协议是也
- HarmonyOS Flutter Boost完全接入手册:爬完所有坑的实战指南
二蛋和他的大花
flutterharmonyharmonyosflutter华为
FlutterBoost在做混合开发非常实用,但官方文档的不清晰。本文将基于实战经验,帮助大家避开那些常见的坑,快速上手并高效开发。前言:为何要写这篇手册在开发过程中,我发现官方文档对于FlutterBoost的集成描述不够清晰,按照官方文档操作会遇到诸多问题。因此,我决定结合自己的实战经验,为大家提供一份详细且实用的集成手册,希望能帮助大家少走弯路。一、集成问题:从源码到har包的抉择在开发初期
- 231、英语小故事(英汉对照)“在心里种花”
阁香书院
正文Anagedmanlivedinanicecottage(小木屋)withalargegardeninatowninEngland.Heisseenbusylookingafterhisflowersallthetime.在英国一座小镇上,有一个别致的小木屋,屋子里住着一个上了年纪的人,他有一个很大的花园。人们每天都能看到他在园子里忙着照看那些花儿。Onedayayoungpainterwen
- SpringBoot—整合log4j2入门和log4j2.xml配置详解
LuckyTHP
springbootlog4jxml
引言对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维。而日志的输出需要有一定的规划,如日志命名、日志大小,日志分割的文件个数等。在Spring的框架下,我们可以使用log4j来进行日志的设置,高版本的SpringBoot会使用log4j2。介绍log4j2概述截取官网的原话:ApacheLog4j2isanupgradetoLog4jthatprovidessignifican
- Flutter状态管理之Provider的使用和架构分析
JonnyLan
FlutterAndroidiOS
状态管理在Flutter中非常重要,但是它包含的内容又非常的广泛。本文我们首先了解下什么是状态和状态管理呢?然后我们来了解官方的状态管理库Provider的使用,最后分析下Provider背后的秘密。状态管理状态Flutter是声明式编程,Widget定义的UI都是在build()函数中实现的,这个函数的功能就是将状态转换成UI。UI=f(state)官方对状态的定义如下:whateverdata
- Flutter _ 状态管理指南篇——Provider
2401_89694064
flutter前端javascript
runApp(Provider.value(value:textSize,child:ChangeNotifierProvider.value(value:counter,child:MyApp(),),),);}通过Provider.value能够管理一个恒定的数据,并提供给子孙节点使用。我们只需要将数据在其value属性中声明即可。在这里我们将textSize传入。而ChangeNotifie
- dart和python哪个好学_最近学习 Dart 语言,分享一下心得 (入门级)
每隔一段时间,总有一种新(或较新)的语言进入大家的视线,比如Kotlin,Rust,Go等,我查了一下它们的“出生日期”:Rust(2011自举,2015v1.0)Go(2012,v1.0)Kotlin(2012开源,2016v1.0)TypeScript(2014,v1.0)Swift(2014,v1.0)Dart/Flutter(2018,Dartv2.0)由于Dart1实质上已经被放弃,Da
- 使用 Dart 库轻松进行时间序列预测 - 立即执行多元预测
krishnaik06
深度学习AI写作pythonAI作画神经网络
这个视频介绍了名为Darts的Python库,它可以简化时间序列数据处理和预测。主要内容:解决时间序列预测难题:Darts库提供了多种模型,包括经典的ARIMA、SARIMAX,以及深度学习模型,可以轻松处理单变量和多变量时间序列预测。简化操作:Darts库使用统一的fit和predict函数,类似于scikit-learn,让用户可以轻松地使用各种模型。支持多种模型:Darts库包含ARIMA、
- Flutter开发实战之测试驱动开发
老Lin头
Flutter开发flutter驱动开发
第11章:测试驱动开发-让代码更可靠的艺术在Flutter开发中,测试不仅仅是一个可选项,更是保证应用质量的必要手段。本章将带你深入了解Flutter的测试世界,从基础的单元测试到完整的集成测试,让你的应用像经过精密检验的工艺品一样可靠。11.1Flutter测试框架概述为什么测试如此重要?在开始学习具体的测试技术之前,让我们先理解测试的价值。想象你开发了一个计算器应用,用户在使用时发现"2+2"
- Flutter 提取图像主色调 ColorScheme.fromImageProvider
愿天深海
flutter
从图像中提取主色调,用于动态适配颜色主题或者界面颜色。之前在Flutter应用里一直用的palette_generator插件,可以分析图像颜色,从中提取一系列主要的色调。最近发现这个谷歌官方的插件竟然不维护了,后续没有更新计划了。查找了一系列资料之后,才发现原来在Material3设计规范中有ColorScheme.fromImageProvider这么一个功能,用于从图像的主色调生成配色方案,
- Flutter开发实战之网络请求与数据处理
老Lin头
Flutter开发flutter网络
第6章:网络请求与数据处理“数据是应用的血液,网络是连接世界的桥梁。”在移动应用开发中,与服务器进行数据交互是必不可少的功能。无论是获取用户信息、提交表单数据,还是上传图片、下载文件,都离不开网络请求。本章将带你深入掌握Flutter中的网络编程技巧。6.1网络请求基础概念6.1.1什么是HTTP请求?想象一下,你走进一家餐厅点餐的过程:你告诉服务员想要什么(发送请求)服务员把你的需求传达给厨房(
- Flutter控件归纳总结
Bryce李小白
flutter
Flutter的控件(Widget)是构建UI的基础,分为无状态(StatelessWidget)和有状态(StatefulWidget)两大类。以下是Flutter核心控件的系统归纳:一、基础布局控件Container通用容器:支持装饰(颜色、边框、阴影)、内外边距、尺寸约束。示例:Container(color:Colors.blue,padding:EdgeInsets.all(16))Ro
- python配环境常见报错not pip
最直接有效的办法:更换python版本condainstallpython=3.10解决办法1:更新pip和setuptoolspipinstall--upgradepipsetuptoolswheel解决办法2:安装pytest-runner库pipinstallpytest-runner
- 实验6 触发器个人实验报告
--1.利用触发器实现对用户表修改的字段其原始内容和修改时间自动记录到record表。--首先创建要记录内容的表record,共有两个个字段:Createtablerecord(contentvarchar2(100),--修改内容rtimetimestamp--修改时间)--对emp表创建一个触发器Createorreplacetriggerupdate_emp_triggerafterupda
- 2021-10-04
潇洒二爷
俄罗斯帝国,重开王室婚礼先河,作家维多利亚嫁给了罗曼诺夫大公RussianImperialhadfirstroyalweddingaftermorethanonecentuary很久很久以前……已经过去1个多世纪了,俄罗斯帝国(RussianImperial)又首开王室婚礼先河,维多利亚·罗曼诺娃·罗曼诺夫(VictoriaRomanovaRomanoff)王妃,以前的名字叫丽贝卡·贝塔里尼(Re
- Ubuntu22.04界面崩溃修复
odoo-卜永
Ubuntu运维ubuntupythonlinux
当系统操作界面不小心,使得界面出问题了,重启系统之后进入的是命令行模式,并且还出现中文乱码情况。方法很多,我介绍一种。方法就是卸载旧的图形界面软件,然后再重新安装。1.输入以下命令以更新系统:sudoapt-getupdatesudoapt-getupgrade2.卸载图形界面相关的软件sudoapt-getautoremoveubuntu-desktop3.卸载安装图形界面软件时出现的依赖,安装
- Leetcode 504. Base 7
小白菜又菜
Leetcode解题报告leetcode算法职场和发展
ProblemGivenanintegernum,returnastringofitsbase7representation.AlgorithmDistinguishbetweenpositiveandnegativevalues,thenstoretheremaindersinreverseorderafterdividingby7.CodeclassSolution:defconvertToB
- Time Management 170 - The Dream of Global Travel
黄家整理Helen
Helloeveryone,thisisHelenHuang@Organizing,basedinBeijing,China.InordertobetterlearnandpracticetheYiXiaoNengTimeManagementSystem,afterfinishedpublishing100Chinesearticles,Idecidedtocontinuewritingandpu
- 商务英语 Level 4 Unit 2 Part 2 Vocabulary【After an Interview】
流非沫
Vocabulary【AfteranInterview】Herearesometipsforwhattodoafteraninterview.AssessthecandidateAssesswhetherthecandidatemeetsthehiringcriteria.Youshouldconsidertheirskills,experience,andattitude.Ifacandidat
- 极限编程Extreme Programming
ExtremeProgramming(XP)*isoneofthemostwidelyusedagilemethodologies.XPistraditionallytargetedtowardsmallerdevelopmentteamsandrequiresrelativelyfewdetailedartifacts.XPtakesaniterativeapproachtoitsdevelop
- 解决flutter attach Bad UTF-8 encoding
青年别来无恙
问题DKFlutterModuleSalegit:(Dev1.0.1)✗flutterattachCheckingforadvertisedDartobservatories...Unhandledexception:FormatException:BadUTF-8encoding0xc(atoffset22)#0_Utf8Decoder.convert(dart:convert/utf.dart
- Flutter 状态管理框架Get
状态管理框架Get的使用目录状态管理框架Get的使用GetMaterialApp路由的注册路由的跳转middlewares的使用组件使用defaultDialogbottomSheetsnackbar状态刷新有很多种方式ValueBuilderObx基础使用是时候引入GetxController,也是Get里面的常用的GetX优化控制器的使用put优化控制器的使用find优化控制器的使用懒加载la
- Flutter生活服务类APP常用的第三方库总汇
明似水
flutterflutter生活
Flutter生活服务类APP常用的第三方库总汇生活服务类APP在日常生活中扮演着越来越重要的角色,从外卖、家政、美容到汽车服务等,几乎涵盖了生活的方方面面。Flutter作为一个高效的跨平台移动应用开发框架,为这类应用的开发提供了强大的支持。本文将汇总Flutter生活服务类APP开发中常用的第三方库,帮助开发者构建功能全面、用户体验优秀的生活服务应用。1.网络请求库Dio:功能强大的HTTP客
- Flutter新闻与媒体类APP常用的第三方库总汇
Flutter新闻与媒体类APP常用的第三方库总汇在数字化时代,新闻与媒体类APP成为了人们获取信息的主要渠道之一。Flutter作为一个流行的跨平台移动应用开发框架,为开发此类APP提供了丰富的支持。本文将汇总Flutter新闻与媒体类APP开发中常用的第三方库,帮助开发者构建功能丰富、用户体验优秀的应用。1.网络请求库Dio:一个功能强大的HTTP客户端,支持RESTfulAPI、FormDa
- Flutter社交类APP常用的第三方库总汇
明似水
flutterflutter
Flutter社交类APP常用的第三方库总汇随着社交应用的日益普及,开发者们需要利用各种工具和库来提升开发效率和应用体验。Flutter作为一项流行的跨平台开发技术,拥有丰富的第三方库支持。本文将为您介绍在Flutter社交类APP开发中常用的一些第三方库。1.网络通信库Dio:一个功能强大的HTTP客户端,支持RESTfulAPI、FormData、拦截器等。Chopper:一个用于网络请求的D
- eclipse maven
IXHONG
eclipse
eclipse中使用maven插件的时候,运行run as maven build的时候报错
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
可以设一个环境变量M2_HOME指
- timer cancel方法的一个小实例
alleni123
多线程timer
package com.lj.timer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer extends TimerTask
{
private int a;
private Timer timer;
pub
- MySQL数据库在Linux下的安装
ducklsl
mysql
1.建好一个专门放置MySQL的目录
/mysql/db数据库目录
/mysql/data数据库数据文件目录
2.配置用户,添加专门的MySQL管理用户
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户
3.配置,生成并安装MySQL
>cmake -D
- spring------>>cvc-elt.1: Cannot find the declaration of element
Array_06
springbean
将--------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3
- maven发布第三方jar的一些问题
cugfy
maven
maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令
有许多参数,具体可查看
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
以下是一个例子:
mvn deploy:deploy-file -DgroupId=xpp3
- MYSQL下载及安装
357029540
mysql
好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址
- ios TableView cell的布局
张亚雄
tableview
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]];
CGSize itemSize = CGSizeMake(60, 50);
&nbs
- Java编码转义
adminjun
java编码转义
import java.io.UnsupportedEncodingException;
/**
* 转换字符串的编码
*/
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final Strin
- Tomcat 配置和spring
aijuans
spring
简介
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。
Server.xml -- tomcat主
- Java打印当前目录下的所有子目录和文件
ayaoxinchao
递归File
其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。
import java.io.File;
/**
* @author Perlin
* @date 2014-6-30
*/
public class PrintDirectory {
public static void printDirectory(File f
- linux安装mysql出现libs报冲突解决
BigBird2012
linux
linux安装mysql出现libs报冲突解决
安装mysql出现
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686
- jedis连接池使用实例
bijian1013
redisjedis连接池jedis
实例代码:
package com.bijian.study;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo
- 关于朋友
bingyingao
朋友兴趣爱好维持
成为朋友的必要条件:
志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。
志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他
- 【Spark七十九】Spark RDD API一
bit1129
spark
aggregate
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
//测试RDD的aggregate方法
object AggregateTest {
def main(args: Array[String]) {
val conf = new Spar
- ktap 0.1 released
bookjovi
kerneltracing
Dear,
I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu
- 能保存Properties文件注释的Properties工具类
BrokenDreams
properties
今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。
&nb
- 读《研磨设计模式》-代码笔记-外观模式-Facade
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 百度百科的定义:
* Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
* 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
*
* 可简单地
- After Effects教程收集
cherishLC
After Effects
1、中文入门
http://study.163.com/course/courseMain.htm?courseId=730009
2、videocopilot英文入门教程(中文字幕)
http://www.youku.com/playlist_show/id_17893193.html
英文原址:
http://www.videocopilot.net/basic/
素
- Linux Apache 安装过程
crabdave
apache
Linux Apache 安装过程
下载新版本:
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi)
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi)
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac
- Shell学习 之 变量赋值和引用
daizj
shell变量引用赋值
本文转自:http://www.cnblogs.com/papam/articles/1548679.html
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
- Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)
dcj3sjt126com
javajdk
Java SE 第一讲:
Java SE:Java Standard Edition
Java ME: Java Mobile Edition
Java EE:Java Enterprise Edition
Java是由Sun公司推出的(今年初被Oracle公司收购)。
收购价格:74亿美金
J2SE、J2ME、J2EE
JDK:Java Development
- YII给用户登录加上验证码
dcj3sjt126com
yii
1、在SiteController中添加如下代码:
/**
* Declares class-based actions.
*/
public function actions() {
return array(
// captcha action renders the CAPTCHA image displ
- Lucene使用说明
dyy_gusi
Lucenesearch分词器
Lucene使用说明
1、lucene简介
1.1、什么是lucene
Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。
1.2、lucene能做什么
要回答这个问题,先要了解lucene的本质。实际
- 学习编程并不难,做到以下几点即可!
gcq511120594
数据结构编程算法
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
- Java面试十问之三:Java与C++内存回收机制的差别
HNUlanwei
javaC++finalize()堆栈内存回收
大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的
- 第二章 Nginx+Lua开发入门
jinnianshilongnian
nginxlua
Nginx入门
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:
nginx启动、关闭、重启
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html
agentzh 的 Nginx 教程
http://openresty.org/download/agentzh-nginx-tutor
- MongoDB windows安装 基本命令
liyonghui160com
windows安装
安装目录:
D:\MongoDB\
新建目录
D:\MongoDB\data\db
4.启动进城:
cd D:\MongoDB\bin
mongod -dbpath D:\MongoDB\data\db
&n
- Linux下通过源码编译安装程序
pda158
linux
一、程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在linux下用man命令查看的命令的文档
二、linux下程序的存放目录 linux程序的存放目录大致有三个地方: /etc, /b
- WEB开发编程的职业生涯4个阶段
shw3588
编程Web工作生活
觉得自己什么都会
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。
根本不是自己想的那样
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,
- 遭遇jsonp同域下变作post请求的坑
vb2005xu
jsonp同域post
今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));
贴出我前端代码片段:
$.aj