<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[langshan_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/langshan_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; langshan_]]></copyright><item><title><![CDATA[[Err] 1064 - You have an error in your SQL syntax]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/139125103</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/139125103</guid><author>langshan_</author><pubDate>Wed, 22 May 2024 17:20:39 +0800</pubDate><description><![CDATA[check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(0) NULL DEFAULT NULL COMMENT ‘头条发布时间’,把DATATIME(0) 改成 DATATIME。]]></description><category></category></item><item><title><![CDATA[javaweb servlet项目]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/132089120</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/132089120</guid><author>langshan_</author><pubDate>Tue, 08 Aug 2023 11:20:40 +0800</pubDate><description><![CDATA[封装报文，访问静态/动态资源，实现登录的功能，cookie，session保存登录的状态，添加filter过滤器，添加多个过滤器，dem4j读配置文件。]]></description><category></category></item><item><title><![CDATA[JAVA学习 流式编程]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/132081575</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/132081575</guid><author>langshan_</author><pubDate>Thu, 03 Aug 2023 13:38:49 +0800</pubDate><description><![CDATA[【代码】JAVA学习 流式编程。]]></description><category></category></item><item><title><![CDATA[Java学习 注解和反射]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/131666306</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/131666306</guid><author>langshan_</author><pubDate>Wed, 12 Jul 2023 18:20:22 +0800</pubDate><description><![CDATA[可以在字节码文件里看到，自定义的注解类继承公共的抽象的Annotation类，Annotation类只有一些继承了父类object类的方法，自定义注解类的抽象方法，在使用注解时每个方法都需要写返回值，如果不写返回值就在定义时写上默认值，如果只定义了一个抽象方法，在写返回值的时候就不用区分方法。只有加了@Singleton注解的类才加入容器，foreach循环遍历数组，getAnnotation()返回注解类，判断注解类不为空就调用addsingleton()把class和instance放到map中。]]></description><category></category></item><item><title><![CDATA[Java学习 IO流]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/131666276</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/131666276</guid><author>langshan_</author><pubDate>Wed, 12 Jul 2023 17:50:52 +0800</pubDate><description><![CDATA[当一个JAVA类序列化时，jvm会给class随机生成一个版本号，一旦修改了代码或者改变jdk再序列化就会失败，因为修改代码或者改变jdk会生成一个新的版本号，jvm觉得此时被序列化的不再是原先的类，就不让序列化，并报异常InvalidClassException。为了安全性，当我们的程序、用户空间要读取数据时，会向内核申请，让内核空间、操作系统去设备上读取数据，读取完以后，用户空间去内核空间复制一份，用户空间再复制一份到另一个内核空间中，由另一个内核空间、操作系统对另一个设备输出数据。]]></description><category></category></item><item><title><![CDATA[SpringCloudAlibaba 初级]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/131651555</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/131651555</guid><author>langshan_</author><pubDate>Tue, 11 Jul 2023 02:28:02 +0800</pubDate><description><![CDATA[下载Nacos有注册、轮询和维护的作用，改成单机模式，启动成功以后访问console的地址可以打开nacos的界面，可以对内存模型或MySQL数据库进行读写操作，权重是被多访问的服务器权重高，临时实例是在心跳模式没有请求成功时会被删除的实例，阈值是为了保护健康的节点，也就是节点出错了依然可以被轮询请求到避免健康的节点也崩溃，空间和组namespace和group，添加角色和设定读写的权限，也可以在nacos中添加配置的内容。同一功能的多个部署，服务之间的调用太复杂。不同功能代码抽离出来的垂直结构。]]></description><category></category></item><item><title><![CDATA[JAVA学习 并发编程]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/131332774</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/131332774</guid><author>langshan_</author><pubDate>Tue, 11 Jul 2023 02:21:15 +0800</pubDate><description><![CDATA[非公平锁比公平锁多了两次抢锁的机会，非公平锁调用lock()时抢锁、尝试获取锁时抢锁，挂起前再抢一次锁，非公平锁效率更高，在挂起之前抢到锁就不必再挂起，挂起的就接着挂起。案例：让flag=false，让线程利用flag死循环，接着打印一句话，启动线程以后，在主存中再修改flag的值，理论上这能让线程停止，接着打印一句话，但在实际的运行中没有出现打印效果说明了线程一直在空转，没有机会到主存中获取已经刷新的数据，这就说明了线程间存在不可见的问题，主线程与主线程创建的线程是两条线程且缓存互不可见。]]></description><category></category></item><item><title><![CDATA[JAVA学习 JVM]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/131333281</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/131333281</guid><author>langshan_</author><pubDate>Tue, 11 Jul 2023 02:18:56 +0800</pubDate><description><![CDATA[JVM将Java代码转换成JVM可以读的字节码文件，再转换成机器可以读的指令，JVM作为中间层，屏蔽掉不同的操作系统的硬件差异(CPU)，在不同的操作系统上安装不同版本的JVM， Java就实现了跨平台。复制算法：一种用空间换时间的算法，将堆内存一分为二，一部分使用、满了就标记整理把有用的复制到另一部分空间去，复制完以后不要的就gc，原来使用的空间就腾出来了，等到下次被使用的这部分空间满了，再倒腾回去。堆中不同的实例对象、可以调用方法区的同一个方法，同一个方法可以加入不同的栈中，独立执行。]]></description><category></category></item><item><title><![CDATA[JAVA学习 集合]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/131408065</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/131408065</guid><author>langshan_</author><pubDate>Tue, 11 Jul 2023 02:17:30 +0800</pubDate><description><![CDATA[在链表头上添加可以提升读的效率，数组的时间复杂度是O(1)、链表的时间复杂度是O(n)，但数组会扩容rehash与新的数组长度计算下标、热点数据又被打乱了，头插变得没有意义，不如改为尾插降低复杂度。高位与低位共同参与的原因是为了让数值大的和数值小的在数组里分布的范围更均匀。源码add()：获取原数组的数据 getArray()、原数组的长度 len，创建新数组，新数组的长度是原数组的长度+1， 添加新数据 newElement[lens]=e，改变数组的引用指向。斜树只有左节点或只有右节点，像链表。]]></description><category></category></item><item><title><![CDATA[JAVA学习 面向对象]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/131333167</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/131333167</guid><author>langshan_</author><pubDate>Tue, 11 Jul 2023 02:12:15 +0800</pubDate><description><![CDATA[桥接方法：使用泛型在编译时，会编译成object而重写父类的方法必须函数名和参数列表相同，所以在实现接口重写方法时，其实是重载方法，而不是重写，参数列表已经改变，一个参数是传入的object，一个是传入的子类，所以，用桥接方法解决多态和泛型擦除的问题。ClassCastException.值传递传递的是拷贝出来的数字，修改掉的是拷贝出来的基础数据类型的值，或者是string类型的值，string是final修饰的的不可变的字符串，被修改的是拷贝出来的、指向新的内存地址的值，和原来的值无关。]]></description><category></category></item><item><title><![CDATA[学习 jQuery 的基础知识]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123921724</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123921724</guid><author>langshan_</author><pubDate>Sat, 02 Apr 2022 16:46:27 +0800</pubDate><description><![CDATA[jQuery start：
1，jQuery 提供的 API 非常好用，简化 JavaScript ，提升开发效率，网上查 “jQuery chm” 有很多字典文档可以使用。
2，jQuery 的安装：jQuery 的 js 文件拷贝到 res 目录下。
创建一个html，引入 jQuery 的 js 文件，在 script 中写匿名函数 alert 任意内容查看 jQuery 是否引入成功。
&lt;script type="text/javascript" src="jquery-1.11.3.min.]]></description><category></category></item><item><title><![CDATA[零基础学习 Java：Spring 二]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123910877</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123910877</guid><author>langshan_</author><pubDate>Sat, 02 Apr 2022 01:34:29 +0800</pubDate><description><![CDATA[第一部分：五分钟学会 SpringAOP 面向切面编程。（如果你有基础的话）
面向切面编程：将函数拦截做其他事而不影响正常流程。
出发点：核心代码与普通代码分离，减少重复代码，降低耦合度。
一，如何让spring项目支持面向切面编程：
1，引入面向切面编程的 jar 包。maven导入，手动导入。
maven 导入： File，projectStructure，libraries，＋，from maven，输入拷贝好的jar包，搜索，出现 Found1 Show1，下三角号，选中，download to l]]></description><category></category></item><item><title><![CDATA[零基础学习 Java：Spring 一]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123880513</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123880513</guid><author>langshan_</author><pubDate>Sat, 02 Apr 2022 01:33:52 +0800</pubDate><description><![CDATA[第一部分
1，先创建Java类，再把Java类定义到配置文件bean中，在启动项目时通过classpathxmlwebapplicationcontext
这个类这个容器去手动加载配置文件。将定义到配置文件的bean，通过控制反转，加载到spring容器中，通过 java 反射机制把类实例化出来，可以从容器中getbean把实例获取出来，获取的是一个对象，转成定义的class，再调用函数。
2，配置文件：相当于一份需要被实例化的 java 类的名单。
定义xsd才能使用对应的标签。
配置文件的创建：可以在创]]></description><category></category></item><item><title><![CDATA[了解maven，快速融入Java项目开发]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123784887</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123784887</guid><author>langshan_</author><pubDate>Thu, 31 Mar 2022 19:09:10 +0800</pubDate><description><![CDATA[1，使用 maven+springboot 快速构建项目：
new， project， springInit， defalut/custom（aliyun），groupId和artifactId：公司部门下的…项目，用maven package以后，把项目打成 jar 包格式（jar：java的文档格式），version：Java的版本号，构建web，springweb项目。
2，learn maven项目结构：
main：开发的目录。
resource：资源目录，static：不能直接请求的资源目录，te]]></description><category></category></item><item><title><![CDATA[onlineSchool 项目课 六：课程主页的开发]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123764768</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123764768</guid><author>langshan_</author><pubDate>Sun, 27 Mar 2022 14:33:00 +0800</pubDate><description><![CDATA[一，课程的主页开发：
1，轮播的 bootstrap 样式

2，sql语句

3，？cid
二，课程展示页：
1，触发函数结合分页：
使用同一个触发函数，传递页码（页码的默认值是1），当前操作的分类数据的code，排序的字段，设置到 form表单对应的输入框，同步提交form表单。
controller中根据前台提交的分类数据的code，获取分类的数据添加到model，作美观设计。把分类数据的code设置到分页类的entity中。用StringUtils 判断如果 sortField 没有值就设置一个默认]]></description><category></category></item><item><title><![CDATA[onlineSchool 项目课 八：个人中心部分的开发]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123725707</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123725707</guid><author>langshan_</author><pubDate>Sun, 27 Mar 2022 00:08:07 +0800</pubDate><description><![CDATA[点击菜单栏的背景色：将 curNav 和当前的点击对象添加到modal。前台去判断 curNav 是否存在且是当前的点击对象，是就添加背景色，不是就维持原来的样式。
学习记录的加载：登录的用户才有学习记录，通过当前登录用户的id获取学习记录表 user course section表 t 的数据，对学习记录表的数据做关联查询，关联course c 表，section s 表
查询字段，通过t表的courseId，t表的sectionId建立与course表，courseSection表的关联。
查询 t表 ]]></description><category></category></item><item><title><![CDATA[onlineSchool 项目课 七：实现用户的登录功能]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123747723</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123747723</guid><author>langshan_</author><pubDate>Sun, 27 Mar 2022 00:07:19 +0800</pubDate><description><![CDATA[一，Java代码实现用户的登录注册功能。
前台：
1，点击一个a标签，请求到countroller，返回一个页面，实现返回的页面结构。




2， form表单输入用户登录或注册的用户名密码。展示验证码，点击验证码变换的效果。
3，对密码进行64位的哈希编码，并设置到输入框。
（注册还需要比对密码一致，不一致数据回滚。）
4，ajaxSubmit提交form表单，校验成功，页面跳转，校验失败，返回Java中定义的失败提示，重置输入框。
//提交登录的form表单
function doLogin() {
]]></description><category></category></item><item><title><![CDATA[onlineSchool 项目课 五：动态的章节数据]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123758926</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123758926</guid><author>langshan_</author><pubDate>Sat, 26 Mar 2022 22:10:09 +0800</pubDate><description><![CDATA[一，动态章节表单的实现
1，添加章节信息：通过包含章节样式的id，复制id 里面包含的章节的输入框，得到的是一个dom 对象，通过html 获取 dom 对象的内容，append 到 tabcontent中。
章节的内容是拿出来且隐藏的，用触发事件点击添加时，才复制一份出来，复制的一份也是隐藏的，通过替换隐藏的样式才显示出来。 replaceAll替换隐藏的样式。
（如果章节的内容不拿出来，这个情况太复杂了，不好描述，可以选择不隐藏章节的内容试试看是什么情况。）
2，添加节信息：通过 id 复制节信息，得到]]></description><category></category></item><item><title><![CDATA[onlineSchool 项目课 四 ：对项目图片的处理]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123722979</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123722979</guid><author>langshan_</author><pubDate>Sat, 26 Mar 2022 22:09:36 +0800</pubDate><description><![CDATA[一，实现图片的预览。
1， 标签预留图片上传的位置。
&lt;img id="imagePreview" style="width: 220px;height: 90px;background-size: contain;background-image: url('/file/attachment/${(entity.picture)!}/0');"&gt;                   

2，选择的input，可以选择图片文件。
 &lt;input id="file" type="file" ]]></description><category></category></item><item><title><![CDATA[onlineSchool 项目课 三 ：上下级数据]]></title><link>https://blog.youkuaiyun.com/langshan_/article/details/123716765</link><guid>https://blog.youkuaiyun.com/langshan_/article/details/123716765</guid><author>langshan_</author><pubDate>Sat, 26 Mar 2022 22:09:11 +0800</pubDate><description><![CDATA[一，分类数据：
1，创建bean封装数据结构。（java类）
//放上下级数据
public class ClassifyBean extends Classify {

    private List&lt;Classify&gt; SubClassifyList = new ArrayList&lt;Classify&gt;();

    public List&lt;Classify&gt; getSubClassifyList() {
        return SubClassifyList]]></description><category></category></item></channel></rss>