<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Spanluobo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Spanluobo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Spanluobo]]></copyright><item><title><![CDATA[JAXBContext实现xml与对象的相互转换]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/134076320</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/134076320</guid><author>Spanluobo</author><pubDate>Fri, 27 Oct 2023 15:24:45 +0800</pubDate><description><![CDATA[以上两个可以更改属性在xml输出的字段名，用法：@XmlRootElement(name="别名")@XmlRootElement ：表示根节点对象，最方便的只用这一个注解就可以转换。@XmlType：用在根节点类上，主要用于控制类的结构和类型信息，以及属性的顺序等。@XmlElement：表示子节点，只能用在属性的get/set方法上。使用jdk自带的类转化对象与xml，不需要引入第三方jar包。2.转化xml的对象用到的注解。1.转化工具类先来一个。]]></description><category></category></item><item><title><![CDATA[java.security.InvalidKeyException: Illegal key size]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/134059716</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/134059716</guid><author>Spanluobo</author><pubDate>Thu, 26 Oct 2023 16:57:08 +0800</pubDate><description><![CDATA[秘钥长度，如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常.  java运行时环境默认读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制所造成的的.JDK1.8之后已经兼容了该问题。目录jdk安装目录：D:\tool\Java\jdk1.8.0_111\jre\lib\security，替换文件就ok了。]]></description><category></category></item><item><title><![CDATA[springboot事件分发模式使用]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/132967784</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/132967784</guid><author>Spanluobo</author><pubDate>Mon, 18 Sep 2023 15:49:09 +0800</pubDate><description><![CDATA[2.创建一个事件类，继承ApplicationEvent，构造方法里面传入参数对象，在事件监听器里面通过这个事件类获取传入的参数。提交订单的时候需要构造订单很多对象，可以使用事件监听器处理构造订单对象的逻辑，包括下单的校验。监听器的事务会跟着外部定义走。主要是用于业务解耦，各个功能代码不冗余到一块。1.先创建一个监听器，举例两种写法。观察者模式的一种体现。]]></description><category></category></item><item><title><![CDATA[浅用cglib动态代理]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/132869921</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/132869921</guid><author>Spanluobo</author><pubDate>Thu, 14 Sep 2023 15:34:37 +0800</pubDate><description><![CDATA[用户通过调用代理类创建对象，无法直接访问目标对象；通过反射创建代理对象，获得代理类、获得构造器，然后构造新实例，实例第一次创建会放入缓存中。Spring的 AOP 功能模块就是采用动态代理的机制来实现切面编。2.创建一个接口拦截类，通过该类创建代理对象，本质就是一个拦截器。校验被调用的 api 是否已经登录和权限鉴定。4.重点，使用代理类创建对象执行方法。3.创建被代理类，实际业务逻辑处理。统计每个 api 的请求耗时。]]></description><category></category></item><item><title><![CDATA[工厂模式的简易实现方式]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/132765282</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/132765282</guid><author>Spanluobo</author><pubDate>Mon, 11 Sep 2023 09:37:57 +0800</pubDate><description><![CDATA[2.在工具类里面初始化所有的service类到私有集合里，再构造一个对外的公共方法对外调用。注：这里的可以使用@Component，也可以再创建一个接口，通过cjlib代理创建对象。1.IService类新增一个获取类型区分的方法，子类实现这个方法，并返回自己的类型。常见的工厂模式通过传入不同类型获取service，分享一个更优雅的实现方式。也可以再工具类里面组合模板方法模式，调用不同的service的多个方法。以下为两个子类的实现。]]></description><category></category></item><item><title><![CDATA[apollo使用心得]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/132717685</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/132717685</guid><author>Spanluobo</author><pubDate>Wed, 06 Sep 2023 16:09:03 +0800</pubDate><description><![CDATA[1.先在apollo里面创建一个自己的namespace，类型为私有的，再到resources下放一个META-INF/config/创建对应的properties文件。2.在这个文件里面写你要覆盖的配置，修改apollo.bootstrap.namespaces把创建得这个放到前面，就可以了。像本地调试dubbo新接口，只有自己的ip有提供者和消费者，就可以直接连接远程apollo的zk测试。读取指定命名空间的配置，可以读取多个，排在前面的先读取，重复的配置只会读取第一个。如果部分配置想要用本地的。]]></description><category></category></item><item><title><![CDATA[Mysql json_contains使用]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/128863964</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/128863964</guid><author>Spanluobo</author><pubDate>Fri, 03 Feb 2023 18:01:55 +0800</pubDate><description><![CDATA[在数据库中存入json字符串，使用sql查找包含什么元素]]></description><category></category></item><item><title><![CDATA[redission与setIfAbsent分布式锁]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/128803016</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/128803016</guid><author>Spanluobo</author><pubDate>Wed, 01 Feb 2023 10:31:41 +0800</pubDate><description><![CDATA[redission与setIfAbsent分布式锁]]></description><category></category></item><item><title><![CDATA[log4j使用详解]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/55803203</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/55803203</guid><author>Spanluobo</author><pubDate>Sun, 19 Feb 2017 11:48:26 +0800</pubDate><description><![CDATA[一、log4j.properties 的使用详解



1.输出级别的种类
ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告，比如session丢失
INFO 为一般要显示的信息，比如登录登出
DEBUG 为程序的调试信息





2.配置日志信息输出目的地
log4j.appender.appenderN]]></description><category></category></item><item><title><![CDATA[Spring + Springmvc + Mabatis环境搭建]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/55803198</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/55803198</guid><author>Spanluobo</author><pubDate>Sun, 19 Feb 2017 11:47:39 +0800</pubDate><description><![CDATA[1.下载JDK 8：http：//www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 
环境变量
JAVA_HOME：D：\ Program Files \ Java \ jdk1.8.0_91 
PATH：％ JAVA_HOME％\ bin;％JAVA_HOME％\ jre \ bin; ]]></description><category></category></item><item><title><![CDATA[Android - AlarmManager设置闹钟]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/55170487</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/55170487</guid><author>Spanluobo</author><pubDate>Wed, 15 Feb 2017 01:36:27 +0800</pubDate><description><![CDATA[闹钟可以设置一次性的闹钟和定时循环的闹钟，下面分别分享给大家
设置闹钟时间的activity_alarm1.xml文件：
里面有设置一次闹钟按钮、周期闹钟按钮，取消周期闹钟按钮

xml version="1.0" encoding="utf-8"?>
LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi]]></description><category></category></item><item><title><![CDATA[Android - 实现拍照，录像功能]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/55094892</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/55094892</guid><author>Spanluobo</author><pubDate>Tue, 14 Feb 2017 09:34:48 +0800</pubDate><description><![CDATA[拍照，我们需要添加一些权限，照片保存的路径可以自己设定


uses-permission android:name="android.permission.CAMERA" />

uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

uses-permission android:nam]]></description><category></category></item><item><title><![CDATA[Android - SurfaceView+MediaPlayer、VideoView 2种方法播放视频]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/55060864</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/55060864</guid><author>Spanluobo</author><pubDate>Mon, 13 Feb 2017 23:08:28 +0800</pubDate><description><![CDATA[Android当中实现视频播放的方式有两种，即：通过VideoView实现或者通过SurfaceView + MediaPlayer实现。


首先为大家介绍SurfaceView+MediaPlayer播放视频的方法，这种方法和我的上一篇博文播放音频差不多，只是需要将媒体播放捕捉的画面展示到surfaceView控件上即可，加一句代码即可

mediaPlayer.setDisplay]]></description><category></category></item><item><title><![CDATA[MediaPlayer播放应用中、内存卡中、网络中的音乐]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/54959139</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/54959139</guid><author>Spanluobo</author><pubDate>Thu, 09 Feb 2017 22:39:34 +0800</pubDate><description><![CDATA[first.播放应用内的音频文件
音频文件存放位置：raw目录（注意：文件名必须符合变量名规则）
1.创建：MediaPlayer mediaPlayer=MediaPlayer.creat(context,R.raw.文件名);
2.判断音频是否正在播放：mediaPlayer..isPlaying();
3.播放：mediaPlayer.start();
4.暂停：mediaPlay]]></description><category></category></item><item><title><![CDATA[使用ContentResolver获取联系人信息]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/54934966</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/54934966</guid><author>Spanluobo</author><pubDate>Thu, 09 Feb 2017 00:12:57 +0800</pubDate><description><![CDATA[ContentResolver的作用：
1、可以通过ContentResolver来获取android内部的数据，比如联系人信息、系统的多媒体信息、短信信息等等。

2、可以获取提供了ContentProvider的应用的数据。




ContentResolver的使用方法：（参考《疯狂Android讲义第三版》446面）


1、调用Context的getContent]]></description><category></category></item><item><title><![CDATA[使用ContentProvise获取APP中的数据]]></title><link>https://blog.youkuaiyun.com/Spanluobo/article/details/54918028</link><guid>https://blog.youkuaiyun.com/Spanluobo/article/details/54918028</guid><author>Spanluobo</author><pubDate>Tue, 07 Feb 2017 23:17:14 +0800</pubDate><description><![CDATA[提供数据的项目：A
获取数据的项目：B


1.先在A项目里建一个类MyContentProviser,继承ContentProvider,并重新方法
2.需要在清单文件里面配置，authoritiies相当于地址，name是类的名字，exported为是否开放


provider
    android:authorities="com.zking.a24provider.PER]]></description><category></category></item></channel></rss>