- rk3588 Android 12 添加framework层服务,HAL库,从硬件驱动层到上层APP,实现led灯控
系列文章目录rk3588Android12添加framework层服务,HAL库,从硬件驱动层到上层APP,实现led灯控文章目录系列文章目录一、驱动适配:1.设备树2.设置文件权限3、开启CONFIG_LEDS_PWM二、HAL层1.引入库2.打包hal库三、JNI四、framework层服务添加1.framework层服务2.添加系统服务权限设置五、app调用总结一、驱动适配:1.设备树ker
- Android NDK开发实战详解
大王算法
androidc++开发语言
目录一、概念二、AndroidNDK的作用三、开发中需要注意的问题3.1、明确使用场景3.2、JNI(JavaNativeInterface)3.3、ABI(应用二进制接口)兼容性3.4、内存与线程安全3.5、调试与工具链3.6、安全风险3.7、构建配置(CMake/ndk-build)3.8、兼容性与版本管理3.9、异常处理四、工程实践建议4.1、隔离原生代码:4.2、单元测试:4.3、渐进集成
- frida objection注入时frida.core.RPCException: ReferenceError: ‘ObjC‘ is not defined解决
马戏团小丑
javaandroid
最新的17.0.xx版本frida进行objection注入时会报错PSC:\Users\19583>objection-gcom.example.hellojniexploreC:\Users\19583\AppData\Local\Programs\Python\Python312\Lib\site-packages\objection\utils\update_checker.py:7:Us
- 高通camera架构 (一)
工作记录从JNI往下看JNI:frameworks/base/core/jni/android_hardware_camera.cppstaticJNINativeMethodcamMethods[]={{"getNumberOfCameras","()I",(void*)android_hardware_Camera_getNumberOfCameras},{"getCameraInfo","(
- Java安全之JNI
java软件安全
介绍JNI(JavaNativeInterface)是一种允许Java程序与本地代码(如C或C++)互操作的接口技术。通过JNI,Java程序能够调用本地代码,实现性能和功能上的优化,克服Java在某些场景下的内存管理和执行效率瓶颈。它使得开发者可以在Java应用中集成底层操作系统功能或使用已存在的高效本地库,从而提升应用的执行速度或访问硬件资源的能力。JNI基本知识本地库生命周期阶段触发条件关键
- 关于 JNI 函数逆向(从 Java 到 native)
shenyan~
java开发语言
一、JNI基础概念JNI(JavaNativeInterface)是Java调用native层C/C++函数的桥梁。在Android中,Java使用System.loadLibrary("xxx")加载so文件,然后通过native方法声明调用底层函数。publicclassTest{static{System.loadLibrary("native-lib");//加载native-lib.so
- Android 音频降噪 webrtc 去回声
Android音频降噪webrtc去回声集成AECM模块集成NS模块需要源码请留言集成AECM模块1.通过webrtc官网下载需要模块\modules\audio_processing\aecm2.新建eclipse工程,新建jni文件夹将webrtcaecm模块拷贝到jni文件夹下3.编写本地接口packagecom.wrtcmy.webrtc.aecm;/***Thisclasssupport
- Android音视频通话
Android音视频通话前言一、准备工作1、编写Jni接口2、通过javah工具生成头文件3、集成speex、webrtc二、初始化工作三、开启socketudp服务四、判断socket是否可读五、发送数据到远端1、视频数据1.1、初始化MediaCodec1.2、通过MediaCodec进行H264编码2、音频数据2.1、webrtc消回声2.2、speex编码压缩六、断开连接前言Android
- 进程 ⇢ JVM ⇢ 线程 + 内存关系
MYGAG
jvm
.从零到跑起一个Java程序OS创建进程execvejava…→新进程的地址空间、handle、时间片就位。JavaLauncher进场可执行文件里的C/C++的main()解析参数,dlopenlibjvm.so/jvm.dll。JNI_CreateJavaVM诞生JVM实例△分配堆、元空间、代码缓存等△拉起GC/JIT/信号处理等守护线程把Launcher的原生线程变成Javamain线程开始
- 【Flutter原理】FlutterView相关源码分析(2)
privatevoiddisconnectSurfaceFromRenderer(){flutterRenderer.stopRenderingToSurface();}}上面的代码逻辑相当简介易懂,可以看到,FlutterSurfaceView实际上是一个SurfaceView,用法也是跟SurfaceView一样,只是渲染数据是最终是通过flutterJNI作为桥梁实现FlutterEngin
- 【安卓Sensor框架-2】应用注册Sensor 流程
蜘蛛侠不会飞
安卓源码解析android安卓源码frameworksensorsensorservice
注册传感器的核心流程为如下:应用层调用SensorManager注册传感器,framework层创建SensorEventQueue对象(事件队列),通过JNI调用Native方法nativeEnableSensor();SensorService服务端createEventQueue()创建SensorEventConnection对象,然后enable使能sensor。这里以监听光传感器的流程
- CppCon 2018 学习:A Semi Compile/Run-time Map with (Nearly) Zero Overhead Looup
虾球xz
CppCon学习开发语言c++
介绍一个C++和Java之间桥接(Bridge)系统的示例代码,它说明了如何在C++中调用Java类(如java.io.InputStream)的方法。下面是详细解读:一、内容来源说明《C++↔JavaBridge》目的:演示如何通过桥接层让C++直接调用Java方法(JNI背后封装)二、代码结构解读classInputStream//java.io.InputStream{public:inli
- android 11.0 打开ALOGV ALOGI ALOGD日志输出的方法
安卓兼职framework应用工程师
android11.0Rom开发疑难问题分析androidromALOGDLOG_NDEBUGALOGI
1.前言在11.0的系统rom定制化开发中,在某些时候,需要打印ALOGV,ALOGI等TAG日志,在系统中,默认是关闭这些日志的,防止日志打印过多,系统过于卡顿,但是有时候会为了调试,需要打开日志开关,所以就需要在系统源码中查看哪里需要打开日志的开关,来实现日志的打印解决问题2.打开ALOGVALOGIALOGD日志输出的方法的核心类frameworks/ex/framesequence/jni
- Android10 音频系统之HAL分析
@OuYang
音视频
一、AudioHAL架构分析Android音频架构定义了如何实现音频功能,并指出实现过程中涉及的相关源码Applicationframeworkapplicationframework包括应用程序代码,该代码使用android.media包中的API接口去与音频硬件交互。在内部,这些代码通过jni去访问与硬件交互的native层的代码。JNI与android.media相关的jni代码会调用nat
- Kotlin 拥抱 JNI
sinat_42356311
开发语言androidkotlin
Kotlin拥抱JNI:数据类高效互通的奥秘引言:跨越语言的鸿沟——JNI的魅力与挑战在现代Android开发中,Kotlin凭借其简洁的语法和强大的功能,已成为主流选择。然而,在某些场景下,我们仍然需要借助JNI(JavaNativeInterface)来调用C/C++层的原生代码,例如利用高性能的算法库、访问系统底层功能或复用已有的C/C++遗产。当Kotlin层与JNI层需要进行复杂的数据交
- cmakelist 定义变量
AI算法网奇
c++入门宝典cmakelist定义变量
自定义变量:SET(opencv_dir"/mnt/d/android/OpenCV-3.4.8-android-sdk")调用:INCLUDE_DIRECTORIES(${opencv_dir}/sdk/native/jni/include)SET(OpenCV_LIB${opencv_dir}/sdk/native/libs/arm64-v8a/libopencv_java3.so)打印出自定
- 探索 JNI - Rust 与 Java 互调实战
金汐脉动 | PulseTide
禅与Java禅与Rustrustjava开发语言
真正的救赎,并非厮杀后的胜利,而是能在苦难之中,找到生的力量和内心的安宁。一、Rust+Java=?Java和Rust是两种现代编程语言,各自具有独特的优势,适用于不同的应用场景。1、Java的优势跨平台性:Java的“写一次,运行到处”的理念使得它能够在各种操作系统上运行,只要有JVM(JavaVirtualMachine)支持即可。丰富的生态系统:Java拥有庞大的标准库和第三方库生态系统,涵
- android调用ffmpeg解析rtsp协议的视频流
偶是老李头
c++androidndkandroidjniandroid集成ffmpeg
文章目录一、背景二、解析rtsp数据1、C层功能代码2、jni层的定义3、app层的调用三、源码下载一、背景本demo主要介绍android调用ffmpeg中的接口解析rtsp协议的视频流(不解析音频),得到yuv数据,把yuv转bitmap在android设备上显示,涉及到打开视频、解封装、解码、回调yuv数据。学习记录帖,C语言小白,不足的地方请指正,多谢!二、解析rtsp数据1、C层功能代码
- 【JS服务器】JETBRAINS IDEs JS服务器使用什么编译JNI
漫步企鹅
JS网站服务器JNI
JetBrainsIDE(如IntelliJIDEA、WebStorm等)本身并不直接提供用于编译JNI(JavaNativeInterface)的JS服务器功能。JNI是Java提供的一种机制,允许Java代码与本地代码(如C/C++)交互。如果你提到的是在JetBrainsIDE中开发涉及JNI的项目,通常会涉及到以下工具链:C/C++编译器:在Windows上通常使用MicrosoftVis
- Android JNI开发
青山渺渺
AndroidFrameworkandroidpythonopencv
1、AndroidJNI动态库加载方式1.1、静态加载静态加载指的是在java类加载时自动加载本地库,在同一个进程中对同一个库名只会加载一次。有以下特点:使用System.loadLibrary(),库必须位于APK的jniLibs目录或系统库路径中在类的静态初始化块中加载,加载时机是在类初始化时只需指定库名称(不含前缀lib和后缀.so)publicclassNativeHelper{//静态加
- Android高级开发第四篇 - JNI性能优化技巧和高级调试方法
我的青春不太冷
android性能优化
文章目录Android高级开发第四篇-JNI性能优化技巧和高级调试方法引言为什么JNI性能优化如此重要?第一部分:JNI性能基础知识JNI调用的性能开销何时使用JNI才有意义?第二部分:核心性能优化技巧1.减少JNI调用频率2.高效的数组操作3.缓存Java对象引用4.内存管理优化5.SIMD指令优化第三部分:高级调试方法1.性能分析工具2.内存泄漏检测3.崩溃调试技巧4.性能基准测试框架第四部分
- ART(Android Runtime)下 JNI 静态注册流程解析
烬柒小云
安卓逆向androidruntimepython开发语言
在Android的ART(AndroidRuntime)环境中,JNI(JavaNativeInterface)提供了两种注册方式:静态注册(StaticRegistration)动态注册(DynamicRegistration)静态注册是JNI方法的默认注册方式,它通过方法名匹配机制来自动完成Java方法与本地(Native)方法的关联,不需要额外的JNI_OnLoad进行手动绑定。1.JNI静
- Android高级开发第二篇 - JNI 参数传递与 Java → C → Java 双向调用
我的青春不太冷
androidjavac语言
文章目录Android高级开发第二篇-JNI参数传递与Java→C→Java双向调用引言JNI基础回顾JNI中的参数传递基本数据类型传递字符串传递数组传递对象传递Java→C→Java双向调用从C/C++调用Java方法实现一个完整的回调机制内存管理与注意事项性能优化提示结论参考资源Android高级开发第二篇-JNI参数传递与Java→C→Java双向调用引言在Android开发中,JNI(Ja
- JVM——JNI 的运行机制
黄雪超
JVMjvm开发语言java
引入在Java开发中,我们常常会遇到一些Java语言难以直接处理的场景,例如需要调用特定体系架构或操作系统的功能,或者利用汇编语言的SIMD指令来优化关键代码性能。这时,JavaNativeInterface(JNI)就成为了我们实现跨语言调用的强大工具。JNI允许我们在Java代码中调用C/C++代码,以实现所需功能。JNI的基本概念JNI是Java虚拟机提供的一种机制,用于在Java代码中调用
- Android进行NDK开发和SO文件生成以及JIN调用
shengyin714959
最高笔记笔记androidjava开发语言
就是生产个so文件,并且可以调用C里面的方法。但为什么要写一篇满论坛多的是的文章呢,就是因为我踩了N多个坑,希望可以帮助大家,让大家少走弯路。要加上这句代码:android.useDeprecatedNdk=true很重要!很重要!【2java类编写的代码】publicclassJniTest{static{System.loadLibrary("jary");}publicnativeStrin
- 在tensorflow源码环境里,编译出独立的jni.so,避免依赖libtensorflowlite.so,从而实现apk体积最小化
Ritter_Liu
tensorflow人工智能python
需要在APP里使用tensorflowlite来运行PC端训练的model.tlite,又想apk的体积最小,尝试了如下方法:1.在gradle里配置implementation("org.tensorflow:tensorflow-lite:2.16.1")这样会引入tensorflow.jar,最终apk的size增加大约2.2M2.根据tensorflow官方的优化编译教程https://w
- Android多媒体——媒体start流程分析(十三)
c小旭
Android多媒体android多媒体
当多媒体的数据源准备好,并且完成调用准备结束流程后,接下来就开始是调用start()方法开始播放媒体了。这里我们就来分析一下媒体开始播放的整个流程。一、媒体播放流程对于媒体播放流程的Java层和JNI层与前面的示例基本相同,这里不再重复展示了,我们直接从mediaplayer.cpp中的start()方法开始分析。1、mediaplayer.cpp源码位置:/frameworks/av/media
- Java GC机制
java
GC基本原理可达性分析算法Java通过根可达性分析判断对象存活状态。从GCRoots(如虚拟机栈引用的对象、静态变量、JNI引用等)出发,遍历对象引用链,未被引用的对象标记为可回收。优势:解决循环引用问题,避免内存泄漏。垃圾回收算法标记-清除(Mark-Sweep):标记存活对象后清除未标记对象,但会产生内存碎片。复制算法:将内存分为Eden和Survivor区,存活对象复制到另一区域,适合新生代
- Android Camera模块解析之拍照
flybirding10011
最近学习Android的camera模块,本文先介绍一下camera2的api,然后给出androidcamera拍照的例子,讲解一下camera拍照的原因知识,与大家共勉。camera2介绍androidcamera拍照功能介绍一、camera2介绍Cameraapi部分:frameworks/base/core/java/android/hardware/camera2CameraJNI部分:
- android逆向分析so,Android逆向 之 IDA静态分析so(一)
扔东西瓜皮
android逆向分析so
概述本文使用IDA对android调用so进行静态分析,以此实验掌握so层的一些分析技巧。前置条件ARM汇编(虚拟机为armebi-v7a)IDA的基本使用JNI开发基础Android中调用so#directmethods#加载so库.methodstaticconstructor()V.locals1.prologue.line26const-stringv0,"verify"invoke-st
- jquery实现的jsonp掉java后台
知了ing
javajsonpjquery
什么是JSONP?
先说说JSONP是怎么产生的:
其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,小可不才,试着用自己的方式来阐释一下这个问题,看看是否有帮助。
1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准;
2、
- Struts2学习笔记
caoyong
struts2
SSH : Spring + Struts2 + Hibernate
三层架构(表示层,业务逻辑层,数据访问层) MVC模式 (Model View Controller)
分层原则:单向依赖,接口耦合
1、Struts2 = Struts + Webwork
2、搭建struts2开发环境
a>、到www.apac
- SpringMVC学习之后台往前台传值方法
满城风雨近重阳
springMVC
springMVC控制器往前台传值的方法有以下几种:
1.ModelAndView
通过往ModelAndView中存放viewName:目标地址和attribute参数来实现传参:
ModelAndView mv=new ModelAndView();
mv.setViewName="success
- WebService存在的必要性?
一炮送你回车库
webservice
做Java的经常在选择Webservice框架上徘徊很久,Axis Xfire Axis2 CXF ,他们只有一个功能,发布HTTP服务然后用XML做数据传输。
是的,他们就做了两个功能,发布一个http服务让客户端或者浏览器连接,接收xml参数并发送xml结果。
当在不同的平台间传输数据时,就需要一个都能解析的数据格式。
但是为什么要使用xml呢?不能使json或者其他通用数据
- js年份下拉框
3213213333332132
java web ee
<div id="divValue">test...</div>测试
//年份
<select id="year"></select>
<script type="text/javascript">
window.onload =
- 简单链式调用的实现技术
归来朝歌
方法调用链式反应编程思想
在编程中,我们可以经常遇到这样一种场景:一个实例不断调用它自身的方法,像一条链条一样进行调用
这样的调用你可能在Ajax中,在页面中添加标签:
$("<p>").append($("<span>").text(list[i].name)).appendTo("#result");
也可能在HQ
- JAVA调用.net 发布的webservice 接口
darkranger
webservice
/**
* @Title: callInvoke
* @Description: TODO(调用接口公共方法)
* @param @param url 地址
* @param @param method 方法
* @param @param pama 参数
* @param @return
* @param @throws BusinessException
- Javascript模糊查找 | 第一章 循环不能不重视。
aijuans
Way
最近受我的朋友委托用js+HTML做一个像手册一样的程序,里面要有可展开的大纲,模糊查找等功能。我这个人说实在的懒,本来是不愿意的,但想起了父亲以前教我要给朋友搞好关系,再加上这也可以巩固自己的js技术,于是就开始开发这个程序,没想到却出了点小问题,我做的查找只能绝对查找。具体的js代码如下:
function search(){
var arr=new Array("my
- 狼和羊,该怎么抉择
atongyeye
工作
狼和羊,该怎么抉择
在做一个链家的小项目,只有我和另外一个同事两个人负责,各负责一部分接口,我的接口写完,并全部测联调试通过。所以工作就剩下一下细枝末节的,工作就轻松很多。每天会帮另一个同事测试一些功能点,协助他完成一些业务型不强的工作。
今天早上到公司没多久,领导就在QQ上给我发信息,让我多协助同事测试,让我积极主动些,有点责任心等等,我听了这话,心里面立马凉半截,首先一个领导轻易说
- 读取android系统的联系人拨号
百合不是茶
androidsqlite数据库内容提供者系统服务的使用
联系人的姓名和号码是保存在不同的表中,不要一下子把号码查询来,我开始就是把姓名和电话同时查询出来的,导致系统非常的慢
关键代码:
1, 使用javabean操作存储读取到的数据
package com.example.bean;
/**
*
* @author Admini
- ORACLE自定义异常
bijian1013
数据库自定义异常
实例:
CREATE OR REPLACE PROCEDURE test_Exception
(
ParameterA IN varchar2,
ParameterB IN varchar2,
ErrorCode OUT varchar2 --返回值,错误编码
)
AS
/*以下是一些变量的定义*/
V1 NUMBER;
V2 nvarc
- 查看端号使用情况
征客丶
windows
一、查看端口
在windows命令行窗口下执行:
>netstat -aon|findstr "8080"
显示结果:
TCP 127.0.0.1:80 0.0.0.0:0 &
- 【Spark二十】运行Spark Streaming的NetworkWordCount实例
bit1129
wordcount
Spark Streaming简介
NetworkWordCount代码
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
- Struts2 与 SpringMVC的比较
BlueSkator
struts2spring mvc
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。 2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring
- Hibernate在更新时,是可以不用session的update方法的(转帖)
BreakingBad
Hibernateupdate
地址:http://blog.csdn.net/plpblue/article/details/9304459
public void synDevNameWithItil()
{Session session = null;Transaction tr = null;try{session = HibernateUtil.getSession();tr = session.beginTran
- 读《研磨设计模式》-代码笔记-观察者模式
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
/**
* “观
- 重置MySQL密码
chenhbc
mysql重置密码忘记密码
如果你也像我这么健忘,把MySQL的密码搞忘记了,经过下面几个步骤就可以重置了(以Windows为例,Linux/Unix类似):
1、关闭MySQL服务
2、打开CMD,进入MySQL安装目录的bin目录下,以跳过权限检查的方式启动MySQL
mysqld --skip-grant-tables
3、新开一个CMD窗口,进入MySQL
mysql -uroot
 
- 再谈系统论,控制论和信息论
comsci
设计模式生物能源企业应用领域模型
再谈系统论,控制论和信息论
偶然看
- oracle moving window size与 AWR retention period关系
daizj
oracle
转自: http://tomszrp.itpub.net/post/11835/494147
晚上在做11gR1的一个awrrpt报告时,顺便想调整一下AWR snapshot的保留时间,结果遇到了ORA-13541这样的错误.下面是这个问题的发生和解决过程.
SQL> select * from v$version;
BANNER
-------------------
- Python版B树
dieslrae
python
话说以前的树都用java写的,最近发现python有点生疏了,于是用python写了个B树实现,B树在索引领域用得还是蛮多了,如果没记错mysql的默认索引好像就是B树...
首先是数据实体对象,很简单,只存放key,value
class Entity(object):
'''数据实体'''
def __init__(self,key,value)
- C语言冒泡排序
dcj3sjt126com
算法
代码示例:
# include <stdio.h>
//冒泡排序
void sort(int * a, int len)
{
int i, j, t;
for (i=0; i<len-1; i++)
{
for (j=0; j<len-1-i; j++)
{
if (a[j] > a[j+1]) // >表示升序
- 自定义导航栏样式
dcj3sjt126com
自定义
-(void)setupAppAppearance
{
[[UILabel appearance] setFont:[UIFont fontWithName:@"FZLTHK—GBK1-0" size:20]];
[UIButton appearance].titleLabel.font =[UIFont fontWithName:@"FZLTH
- 11.性能优化-优化-JVM参数总结
frank1234
jvm参数性能优化
1.堆
-Xms --初始堆大小
-Xmx --最大堆大小
-Xmn --新生代大小
-Xss --线程栈大小
-XX:PermSize --永久代初始大小
-XX:MaxPermSize --永久代最大值
-XX:SurvivorRatio --新生代和suvivor比例,默认为8
-XX:TargetSurvivorRatio --survivor可使用
- nginx日志分割 for linux
HarborChung
nginxlinux脚本
nginx日志分割 for linux 默认情况下,nginx是不分割访问日志的,久而久之,网站的日志文件将会越来越大,占用空间不说,如果有问题要查看网站的日志的话,庞大的文件也将很难打开,于是便有了下面的脚本 使用方法,先将以下脚本保存为 cutlog.sh,放在/root 目录下,然后给予此脚本执行的权限
复制代码代码如下:
chmo
- Spring4新特性——泛型限定式依赖注入
jinnianshilongnian
springspring4泛型式依赖注入
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
- centOS安装GCC和G++
liuxihope
centosgcc
Centos支持yum安装,安装软件一般格式为yum install .......,注意安装时要先成为root用户。
按照这个思路,我想安装过程如下:
安装gcc:yum install gcc
安装g++: yum install g++
实际操作过程发现,只能有gcc安装成功,而g++安装失败,提示g++ command not found。上网查了一下,正确安装应该
- 第13章 Ajax进阶(上)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- How to determine BusinessObjects service pack and fix pack
blueoxygen
BO
http://bukhantsov.org/2011/08/how-to-determine-businessobjects-service-pack-and-fix-pack/
The table below is helpful. Reference
BOE XI 3.x
12.0.0.
y BOE XI 3.0 12.0.
x.
y BO
- Oracle里的自增字段设置
tomcat_oracle
oracle
大家都知道吧,这很坑,尤其是用惯了mysql里的自增字段设置,结果oracle里面没有的。oh,no 我用的是12c版本的,它有一个新特性,可以这样设置自增序列,在创建表是,把id设置为自增序列
create table t
(
id number generated by default as identity (start with 1 increment b
- Spring Security(01)——初体验
yang_winnie
springSecurity
Spring Security(01)——初体验
博客分类: spring Security
Spring Security入门安全认证
首先我们为Spring Security专门建立一个Spring的配置文件,该文件就专门用来作为Spring Security的配置