【iOS(swift)笔记-14】App版本不升级时本地数据库sqlite更新逻辑二
App版本不升级时,又想即时更新本地数据库怎么办?
办法二:从服务器下载最新的sqlite数据替换掉本地的数据(注意是数据不是文件)
稍加调整,
// !!!注意!!!如果只是通过网络更新数据而不是更新整个数据库,应该要额外有一个数据版本dtVersion,而不是用直接用dbVersion。两者互不冲突,各有各用。
具体逻辑
1、首先本地数据库里一定要有一个字段(名字自己取)
比如dtVersion,可用数字(比如1或字符串1.0.0)存储,记录当前数据的版本
2、访问服务器
服务器同样也有一个属性dtVersion2记录记录最新版本的“App的本地数据库”数据
如果dtVersion2>dtVersion
则下载数据进行更新。
网络数据互通通常用JSON结构,但是考虑网络安全性,通常传出去的数据要先加密,得到数据后再解密。可全局加密也可局部加密,这里为了让观众看个明白就采用了局部加密
举个栗子,下面贴出来的是服务端返回的一串数据,
基本格式是这样滴:
数据版本@@@@@表1数据列表@@@@@表2数据列表@@@@@表3数据列表
每个表的顺序事先定好,不能再变。
因为数据库有很多个表,所以指定字符串将表数据之间分隔,App得到数据后用split分割出来,然后再将每个表的数据转成数组就OK了。
具体数组转JSON,JSON转数组的方法自己网上查找
解析出数据之后,再逐个将本地数据库sqlite进行更新即可
===A===>18@@@@@[]@@@@@[]@@@@@[{"img":"zIX4EGSrqQvIo/2s7ySukg+Md7U9SrlyxneSfUb+xnu0Y+CKyhPLaOPx34qJlnN8ZA==","date":"","sub":"Zl/Osw60h1HUfCx29RCmZPMwc68d85RHXLSYwQ==","domain":"WmGWYO6hIE716RuZAyjvXGe1oW3tCrORBiWpUVkmzB1GHJUF2w==","device":"mac","node":"i8EWwxgUTnuawmhftjhWNEd3BsvLKoFkjzZLQXHLlwyIE6GZTPlJ62rPVlw=","id":1},{"device":"pad","node":"DVKVj0Cw6pLEVWN9yGTQ0mkEhVQDgEe12GChGcvB91+DWSA4eEaVEnExri0=","sub":"saqgzOB3eMu+J7J1I+fQKxTHG/RX5PtNmgdt1Q==","date":"","id":2,"img":"1QLcJvTnp+b94mqLit7ue7ewQTH+vuFXJxWlv43BUjarZQgU8ufmxyWoIuO1w54/Sw==","domain":"gGbytAnayppwc9YzAMjWKDbWsDXOYkfg2Fv52zYsCWsH9IwYwQ=="},{"node":"dUr3gxX5pXtgpfnSuqlFWOOCObx8INQ+o1owVEENEgskQeCu+7l8uT884V4=","domain":"FvqqxW7HIuN+6Pda9tDEj1EzjhKD7nLu0mP+L1U4JtkcicnIsw==","img":"f4GQ4jPsxh4YGYDhxHXI8GlpzlLWPU8ZF7nuZBK8aANiAQFANr6mu71Hrzy/NHMgLg==","sub":"n0XpEW4dWIx+keMf+5EoX4HxM+Ao4/WPFbWMtQ==","id":3,"device":"phone","date":""},{"date":"","node":"EngsJFUFZqbCHKlF3FUtVuwtdfqVtimmv8EOCOzh9KIOHbSTpidlxvcvOyI=","domain":"fgpRV58bTW/ogX/m1woHo95vjD9rNkVeAMhIpvVs9/Fg/qy3ZdYMiCE8AQ==","img":"DI1qjMFdCeiragWN0UhVrxuq9gHIJqt2DNycwLLibuB+bfV2GBqtSShwpfKrhHGVAA==","device":"mac","id":4,"sub":"fD2JXtQzJQJe/JS0vx+VF5us+8TbzGbuJdUxKg=="},{"id":5,"node":"oLWXtc4q3JgeNf4LzGz4zBXL8pPFh9hLVBMK+sq2dU66iwxk7x3sGgzI/QQ=","date":"","device":"pad","sub":"cF0NV5sICsn3QSBAnHZxfEexoIzRqa47l8fm8g==","img":"dLwL2s+ru3Z4b0e90C6Rmgr1coSIvd6ig3+TvpMTovahtsaLTkG7Pd0li1dB9T/AzA==","domain":"E5Flif+XV0+yI0qabakBasgMgnts/HbVds7ADFXtc8pO32C7tOMZUg0pog=="},{"node":"ktodhWW0O6nKLxXGo56p/WDIVEdvQWkz2bugRQJ2qVfc2aB6kwtJdx1outI=","date":"","id":6,"domain":"b+foqbBEvwkBe8LyVJGYyjaLuLK8V52coxAfeelj6xzNKrd2iy3hbiCyQA==","img":"DBNXgSlyZhcVEwU/PZQX6MTARdT4CCseuFwxLU5x/0e/bb5atbiv97fXaibiXWhuYw==","device":"phone","sub":"aJ+1+dxIq3O7GBNOafBiLbTzRByXC4eV2pz48A=="},{"date":"","id":7,"sub":"joAAMTcogFAOJgqoPEfJlG0IcYnocmXmWVBrFA==","node":"p05g2R7XTeQOSihzUjCOJ/g7A3A8qcvcO5Ru38BgRCkNN+qSUbPBCMmk","domain":"gekdLfOb0LcSFOMnitp4FvG2TO+P2IPpSVIFCUwYvDGM3nYd1HSj5F8=","img":"nCOp6ixmooIrbQte1d88ifyxgGxDjkfXfdgOBiuNrgqIfUXYbh8MQVWQCZWcsA==","device":"mac"},{"device":"pad","id":8,"img":"npzP1AnlHrVMBlURK6RlERzbZLB2IKkyzACKwOazOBQgoY7sb7oARfso4iUWgw==","domain":"q8LLam8EMP4DiDXdCHG8GPmSPY1O1u9uGQiZUr89Yt0btY4h7ldoQ6I=","node":"WfhlsTSMdVU05MUa3RAHPI47YSDKnk7SHkSUolbP2Sz89HlxYRU9eQNN","sub":"x9mIgMtdgtnZhkFck92LGRSkxO9jGF44d5poDw==","date":""},{"sub":"ZGqJJJ8hx7rI57TZUybaybFxCXwBHlKtifqWjQ==","img":"ahMPacv8sbBOr0MH6QLO8wf+XPGqIEiuBC8p42AlvNbMnmVAlFKy3fpKUwfT9Q==","node":"us5sV3qtfPg+rVKLt63OK1Nki5JuWxNQykkgFHyw9WhwbdqC4JJA9HcS","id":9,"domain":"oVzU0z7nhPZOP5DDWZrCVgx9zn6fTyiga0zEkKc9ZRBy1xlE+dmsnUM=","date":"","device":"phone"},{"device":"mac","sub":"clmY+21m/tTzN4ByxbGkrOBdA2yuGUUJ/lpN/fgpQzk/2+F+ZLQ1GjCny0o6IE8iPXBIp4typofydgc=","node":"Lg9+uDKHhLNd5gh1t/mDyW4ZdKRh2lndXS7f/PWrkp45ZglTYY0MV2fFXPI=","date":"","id":10,"img":"TW2QRE7heRb/yw8T0FBsMpG62zdy1vrOOYnGFInik/XlneYZ/fUq7W3rXwRqFCucOspio4g1PtzUtjkuuNtoZiiPgUmpbV70K71grVUg","domain":"7JBvQnlNdBX55D3eNw1dImntT58CWmUuecm3IYBXGkPoFFZ8/CrHDHVh40I="},{"node":"lVxiaKRbFv0xMEGLSDntb5ZuZ3md2CtYZK+9/RqTQk+6qU5NPaApPONXZo0=","img":"l3P2Hx/iLnybD2EolTZUr1ToIG9jnW+ZtbUJQ5thlMRc6fE63/pmYoBvs+slqJKeelWuO6xPeZnDaTJfdTtSAbMF50UT2FMDq6Y2AFuP","sub":"8pNa7fWtgTP2U8lHCoZavw70Ev4p50m98cFhYyPmYz+5nCuXId8x1Uh2lXlOrZWxUJ4Iw1feLYzaifs=","date":"","device":"pad","id":11,"domain":"KvZAB5vzdYz/X/mqYjkMvGNkKkXwKuRfALYIxKPW2owSCU7HhYmouv7Sxjg="},{"date":"","id":12,"device":"phone","sub":"a/my9PixeH8d8OpLp0VRq4X406Uj3wbrImyvBZOCB7uXfPxWehbWq5j7VqHV6WmEW7h2fYqfn53AEdg=","domain":"f0OEo7SwjHOl6+UojAtWGaxXHANZv31ADLh8qLG6VUayvuXG99cSk53QBiI=","img":"pf7YcHu8NmTDaOQpwz8X9wRImnbKeD1WqHSFj7zzderIE46RbSYOvMVZbMCS8b0V70K5GYBZyHp6De0BDaLqnadxv7AYmM8slMZ5e81E","node":"fuFG5+/UEviu6w2Fqm4iSV6H2j8RyF3VI/yWhJT+uPPOib/gdWIM3HiJJfc="},{"device":"mac","img":"ipgVtdtVekvdOHGw6n3OyVcohhvgJyqJNOhP1qWzzQxIJAlQC+bTF3c7","domain":"REzYKHePmtNMDySaSRKbRrNbqe60OltxswCJM2lTn4vPPnnquo2UyUuTzdaPLlYRU7gnfMg=","date":"","id":13,"sub":"hrgfhoEbqSYRIgum8o+eTGhCPoPRRwkDOS+y0A==","node":"2RNmH8fPIjiAmT8ozhv223/3jDg8HYvD5oFkqoeTKTbqc+yPwug="},{"date":"","domain":"mD+T3zQiMaOpzOEdCwsIYvPcAesi2tBMd2u5yqcj3uLQSs2MsnFC50985aC0nx5/1jqrUCE=","id":14,"device":"pad","img":"pHW+FtW2N4ZJ+cRLSYvEjLc0AcvcytqduFKyvXAJSP3aK4L1X2uRR0FI","node":"2v2HhY7WG4i95N+OFYpP8oWIVbaWtB1VKatYtiqiADWZCjBVMG0=","sub":"LNLJaKvCkLkzneTOz7bX+FFndL5k2qghaDYjMQ=="},{"img":"O6JsBiM/xVK2u7vWT6mLVTNhK6Xc/yF66oNWRypdh9ogFH+WvX7xP7jG","domain":"/LjXY7lOc7aNfYIq10MJs6KaWD/DXKhczcyWgKS7jQK474ckxSMGsNPI6s4xrEY8/4M2lZ4=","node":"GLJKvG4hZnbq/gpdD32QYDQXsOIdT0MWd/n774JsKfWxZ6Qj/Gg=","device":"phone","sub":"WkgALGDgUCsu/EA+knDVJaveenYnRTd8Xf1GSg==","date":"","id":15},{"img":"/E2S48+pDdOCW2hUE+Uodr/SYplWtKf2urM/h+4pfd3Lau7G3iXWBXA=","id":16,"device":"mac","sub":"/u56UxeUx7Grkeb1xkNgsH3kQ9Q+GBf0xqclOQ==","node":"QL84ohB3Y+vp545F+C0JsS1q8tgpd1a/2AGo50PsrZz5bBgotg==","date":"","domain":"BwSRlCOWjuJZ5jwNk40RgDT2vigqT+Yptkl6GJTZ4Gv0Sg8+EQ=="},{"img":"wOwyQivfjm9AQiO5npWTPRkAhmeihELG7q89l4FvmYin+XlPqzpdnSI=","sub":"vDpT+3kXXnK1MeF6+fv32q7k7J+TTpH6PJGiIQ==","id":17,"domain":"3puQkXXmqp5MKGm5fkYteurXZybn7aTe39zOzShBGDpJ6GMMeQ==","device":"pad","node":"QOcHZlpn69AZusfINKhYtsg82JFEe8fdwVgS7cnWUqVYfHRvxg==","date":""},{"id":18,"date":"","sub":"Z2HQayuPnxW4O67wBl/XMUDidrdhVGVNxXnj8Q==","node":"WdFLkKA7gefYycll1nywizk1LOUzshC5B3Os5JHG1ou4+x+n8A==","img":"txAUjgSXWNWYDkRffqCO4yqq5uuQknPrZFvBpFd+PLrQHeqzzmh+0Jk=","domain":"tWCZnw7ZLf5//VKXN9iec0HR0xeqqxmyb/HpSjgpAnWPSS4i1g==","device":"phone"},{"img":"E8KrGJT6ZKL6Rc4ep9MXkeWtd9Tu8Vc2ByfscGw+h0EObRUqGRgDYgyyXNDQrjRZMTVkuTw=","sub":"u/wIsqQ2xeHF9bbeM0NZ3NBkc387z5RGLLz58g==","domain":"Bnb2qDb9JaLZuNtj+hLp31LfABFFVRWD9JLvJMg36liiJE+pX8j+Px6IQA==","node":"aZAmuHzOCm/NDfIJqkgx52cnGFeVqvY4Vc1e2ItJn/B/WDvunpg6ooJ27OpkHlHK8g==","date":"","id":19,"device":"mac"},{"id":20,"node":"7K8qbTFo6wxB0eTI6rNcn2FdD2KGDKzxJZsof4Csx0I2yV61NW4kbtLHeAl4sOA39w==","date":"","sub":"BZDdELKooUPQvyKNJaxLb8ThGqV0eQ1FOnZOUw==","img":"oYXmt9Lz+EhELkfpaKpK8XkXVTdofPgCWO23gfmKB1zo7hJuerYdfXWcRLu7oo3oUAKoE4I=","domain":"LKDgsP1m4zluSG9LGj8UEFd7ClPwCuHYcOKsQZvoT6bQwQyYyCdVPowsIw==","device":"pad"},{"domain":"Xzeb4bEAhO9OO+T2Cae7gsdxyH2IzIK0Hcpk57FD/Y4fCi4Zu4mI0QNwGQ==","device":"phone","sub":"WSfTDo9WC569/fVvQZxLYY055NB41966VuBeJw==","img":"6FgldTEPf0W42SacGDAD+xDogulQlGneNPORh2EfHl6myDa/27EUEXDxefusqS+eR01wH9o=","date":"","id":21,"node":"XobLn1Z6fYBjoCTwbX6zCfOVr4fmDLI5ifTxMnGMl81U6MEujXZSob6wLfL/NI1uaw=="},{"domain":"dTGN47tfvQLow2VCzuwXBfnSH0CMaCPUa+IjXVqiyEqRHxpuBFRo0Dn7","id":22,"sub":"dEUelfLQJtjNNgGG+3CbYftTQjLyrOl8bIal3g==","device":"mac","date":"","img":"heu2tlEWX17NpaLuGQ8oZLYcpq0WbWZX6404cYY61wQkE6RubYc/oSXNVCfCDQ==","node":"TlFDMzcQ2XXk1b78lRILjJkMJWeeKGak/MUCAb1anw7s/h8MXNGwgUEO"},{"node":"a1sEg3mHBpQZ1FoXNI/9yHwAWTkiGumhdXTCsNHrp3vNbrzjbQNXDOJE","id":23,"domain":"uJD3dj+QFMdG/IdS1anVXHazbrFg6LPUXaeCEyckNCINiNWHMTIxm2+o","device":"pad","date":"","img":"Jk4NIwHQVWlocOylvztzRI+OGTk43/nnGQPRPIfT4H/tYBcnlo7w8/zLxhWojg==","sub":"x4cVIh0ibKcIYIH5b3o9KXKZeT/2hRmAhO+MqA=="},{"device":"phone","domain":"VMznhb64LKnJ3B+xlzp+aedCgEzm8u4VAaZLXoAzfaWpPlzAKBfIhe9p","date":"","sub":"UJ/+I+TFbgwef8cDX7fPUcNoKTWuxWesvEOSBg==","img":"6qR0F1BZKVKVuoPqP57stg4zWBx764+g6XKyriq9cpdwfnZXnTy+DIFzcrZWRQ==","id":24,"node":"04aRdp5bsDxgdltQL6fTQp+0zqnFgcEeWEpapRDOMiQzmfEYsfZv+imN"},{"date":"","device":"mac","img":"0ckSjr6h7zf1weKuIj+Emea3prTGJU4MAMsmatpdtHmqyWv8P2MIB3a8Ls0=","sub":"V2pCjNfwr+i5fpa1frZq4MoqnzUPFbPrHfkyxw==","domain":"al+sPyX1/CGJpH0zoOKohvmxCxZzGRi3/iHI5Y9SGuIg1rpgi6V9MvSv","node":"LSH2tW8fPeTjX8/J44kXMlwblLuZ1NzDJ5PBYlUylkMHuHIbeNaMNA==","id":25},{"device":"pad","sub":"ukl6nXrTuGnU9mwxrcj5KNRh2tsznGvDSR6h/g==","id":26,"date":"","img":"JtJqTb9QqP1sz13kvSf4I7kni/Pad1AKq/mXKnIaE1jV9dQIOKQRiaLdF/c=","domain":"d/NrIEyPxgJz5yk5x47Yz3ZE6sbqu504vNodpfKrzJZwaEnafVubflHG","node":"3ApeexqK8i4UA/aONBiP8Tfp/pCEn5STsaeMrpKejeRBOCeYn4iyHA=="},{"img":"brbbnOczRp9VgrVScMrsMxW/qPqwrb6+zH/wTFLMQ+p4r8E7VyKuHy61UFY=","date":"","sub":"8tXYbSgS5BfTOB+MVC0cBeOsjZulblNxrbSZ/A==","domain":"i5xAgGL/JyU73dnDb9rsy+KLbn8tOuY8r3YnseU54X+SYvl4uoMymCKi","id":27,"device":"phone","node":"B2TNIoPNq/+IEzwychlsDANZynkIEEcjdbzffFEDIv/RhzCBR2/4Qw=="},{"img":"Zr1DXR1qJHWNA7ikK9ik64b4shzeTZg2zhJpRNSDbuYFov21OBqJaRzDgRbB","sub":"tJAS1OtkzsrwIxDmf4vc4HIbISrpOFYXIQxGKw==","date":"","domain":"2LvOPOUSE5cvsbYbrbM/eokkp+H3uNeTPBxTkxXpQc/VspCGOQ==","node":"t8KIGn7ky2Bkfm29r7CYoTeI+wFzHq86kpf44bsHAZ6MAUCgA2rk/o4=","device":"mac","id":28},{"img":"EnklKhb3FAODebTaz4dU4sFR1X0j5Gl2Jm6pCKoHRdDgYWweH+Dq1u/5sj6D","domain":"aJjYF1sk243c/y69K/1fo2HpCY2DC5iya9bBEOBvz22iG7lW0Q==","sub":"piDOmp8WJD7vg0B9LF9m327nXsjs5yU6JSVcGg==","node":"J/Aos6O68f0DAVFrmLNe0uFl9zP6YFP7AEqARrJ2xxUZtaoElHLRHio=","id":29,"device":"pad","date":""},{"date":"","id":30,"domain":"Jezi4XQ+vNSZel1p0usBT6okP1yOZmPMKDHG9C6TXxALcMMzIg==","device":"phone","node":"eYmejovpL9jepbuYXWGowuCt6Pu0WEG5r3w5aWgU4yTh1H9YTld9PZ0s3w==","sub":"/OiJxbaFxUhvkUxBC7a+ie3lI396rZPgYnh/rQ==","img":"6m5QbrdJDI7eklBUlDmmDypAl/2FbFEd+uiPZsM6vADD9ttMReFTMpkq6P7TFyIuMKIWfvtCSPbUj41dzr63rtgcVcdTGA=="},{"sub":"KI8VmAkyolW0CIWJySnDANj2f9mSjd4uSskuEQ==","domain":"aabBr+3s9idcvc93Q3/h7wSHO+whqhBvvrLRUFD5vLo7IuHtOg66","id":31,"device":"mac","node":"0+hYoVxZfoxlFB/or8Zsdy1ETr4hwFXmta4lGpu/xeTEA9gH1F8+L3SopdE=","img":"jK4jqZDyiNwSC7XvgVTPdwXTPaPg61y+retjcZUwuBjlrT7lkaW/5PRVD85zstC5","date":""},{"device":"pad","sub":"hIsAb+rRRaquoK8ueaBfP5jlPQSoFbKVUcRYvQ==","node":"gwUq0pZTOS0U93X6yDlj+5mo7xJ1sruK16L1ETkXpItxoYeaVmjpSSxUJzY=","domain":"7EGCJziI7bn8MLzDUtWpTitny8PRuxvrboMacUK8GCiU2A5SmrIO","img":"ilkFd+jmYsd1vvNbY21sILUBFo8olL4xDloMXlCTqvgr8Jyl/u3KYjTV1n4tcXpW","id":32,"date":""},{"img":"i5vEQvykuQtA/qSGgDS+JbHV4pvU5WLrmfPuBkQqDylKkkizjO+Oi0lbtFOMa8ek","id":33,"node":"GGKDlrqNBD6lIkvoGIegN9xPA6mHshe03UcwK4IRZI7mAIOW8IzjwGaVBvk=","sub":"73RfZK2KzWKKTLp7BRCQfmMmQuxP5CqRm8pEMQ==","domain":"v3NRBYmafxb8yVSYioYNt3+9kP3xwr/S7y565M0wUI4KT6ByZTVQ","date":"","device":"phone"}]<===A===
相关文章:
【iOS(swift)笔记-14】App版本不升级时本地数据库sqlite更新逻辑二
App版本不升级时,又想即时更新本地数据库怎么办? 办法二:从服务器下载最新的sqlite数据替换掉本地的数据(注意是数据不是文件) 稍加调整, // !!!注意!&…...
前端性能优化:提升用户体验的关键策略
引言 在当今快速发展的互联网时代,用户对网页加载速度和交互流畅度的要求越来越高。前端性能优化已成为提升用户体验、降低跳出率、提高转化率的关键因素。本文将深入探讨前端优化的核心策略和实践方法,帮助开发者构建更快、更高效的Web应用。 一、网络…...

Unity-UI组件详解
今天我们来学习Unity的UI的详解,这部分的内容相对较少,对于程序员来说主要的工作是负责将各种格式的图片呈现在显示器上并允许操作这些图片。 本篇帖子的理论依据依然是官方开源的UGUI代码,网址为:GitHub - Unity-Technologies/u…...
基于大模型的短暂性脑缺血发作(TIA)全流程预测与干预系统技术方案
目录 一、系统架构总览二、核心模块详细设计三、系统集成方案四、系统部署拓扑图五、技术验证方案六、健康管理子系统七、安全与合规设计技术指标与性能保障八、HL7 FHIR接口规范九、分层蒸馏方案十、多中心RCT研究设计十一、硬件选型成本优化方案跨模块集成工作流一、系统架构…...
嵌入式学习 D31:系统编程--Framebuf帧缓冲
(1)framebuf帧缓冲 :linux提供的显示设备驱动的接口。 设备路径 : 设备/dev/fb0 * 分辨率:像素点是w * h。 每个像素点色深 RGB:0-255 红绿蓝各3字节(byte)即可描述色深。…...

黑马点评完整代码(RabbitMQ优化)+简历编写+面试重点 ⭐
简历上展示黑马点评 完整代码地址 项目描述 黑马点评项目是一个springboot开发的前后端分离项目,使用了redis集群、tomcat集群、MySQL集群提高服务性能。类似于大众点评,实现了短信登录、商户查询缓存、优惠卷秒杀、附近的商户、UV统计、用户签到、好…...

Java 大视界 -- Java 大数据在智能安防视频监控中的异常事件快速响应与处理机制(273)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

【数据库】安全性
数据库安全性控制的常用方法:用户标识和鉴定、存取控制、视图、审计、数据加密。 1.用户标识与鉴别 用户标识与鉴别(Identification & Authentication)是系统提供的最外层安全保护措施。 2.存取控制 2.1自主存取控制(简称DAC) (1)同一用户对于不同的数据对…...

【图像处理入门】4. 图像增强技术——对比度与亮度的魔法调节
摘要 图像增强是改善图像视觉效果的核心技术。本文将详解两种基础增强方法:通过直方图均衡化拉伸对比度,以及利用伽马校正调整非线性亮度。结合OpenCV代码实战,学会处理灰度图与彩色图的不同增强策略,理解为何彩色图像需在YUV空间…...
D2-基于本地Ollama模型的多轮问答系统
本程序是一个基于 Gradio 和 Ollama API 构建的支持多轮对话的写作助手。相较于上一版本,本版本新增了对话历史记录、Token 计数、参数调节和清空对话功能,显著提升了用户体验和交互灵活性。 程序通过抽象基类 LLMAgent 实现模块化设计,当前…...

HALCON 深度学习训练 3D 图像的几种方式优缺点
HALCON 深度学习训练 3D 图像的几种方式优缺点 ** 在计算机视觉和工业检测等领域,3D 图像数据的处理和分析变得越来越重要,HALCON 作为一款强大的机器视觉软件,提供了多种深度学习训练 3D 图像的方式。每种方式都有其独特的设计思路和应用场…...
123网盘SDK-npm包已发布
前言 大家好!今天想和大家分享一个我最近开源的项目:123 网盘 SDK。这个项目已经在 GitHub 开源,最近已经发布到 NPM,可以通过 npm i ked3/pan123-sdk 直接安装使用。 项目背景:为什么要开发这个 SDK? 在…...
强制卸载openssl-libs导致系统异常的修复方法
openssl升级比较麻烦,因为很多软件都会依赖它,一旦强制卸载(尤其是openssl-libs.rpm),就可能导致很多命令不可用,即使想用rpm命令重新安装都不行。 所以,除非万不得已,否则不要轻易去卸载openssl-libs。而且…...
乐播视频v4.0.0纯净版体验:高清流畅的视听盛宴
先放软件下载链接:夸克网盘下载 探索乐播视频v4.0.0纯净版:畅享精彩视听之旅 乐播视频v4.0.0纯净版为广大用户带来了优质的视频观看体验,是一款值得关注的视频类软件。 这款软件的资源丰富度令人惊喜,涵盖了电影、电视剧、综艺、动漫等多种…...
Linux 命令全讲解:从基础操作到高级运维的实战指南
Linux 命令全讲解:从基础操作到高级运维的实战指南 前言 Linux 作为开源操作系统的代表,凭借其稳定性、灵活性和强大的定制能力,广泛应用于服务器、云计算、嵌入式设备等领域。对于开发者、运维工程师甚至普通用户而言,熟练掌握…...

FreeRTOS的简单介绍
一、FreeRTOS介绍 FreeRTOS并不是实时操作系统,因为它是分时复用的 利用CubeMX快速移植 二、快速移植流程 1. 在 SYS 选项里,将 Debug 设为 Serial Wire ,并且将 Timebase Source 设为 TIM2 (其它定时器也行)。为何…...
DeepSeek模型安全部署与对抗防御全攻略
引言 随着DeepSeek模型在企业关键业务中的深入应用,模型安全已成为不可忽视的重要议题。本文将从实际攻防对抗经验出发,系统剖析DeepSeek模型面临的安全威胁,提供覆盖输入过滤、输出净化、权限控制等环节的立体防御方案,并分享红蓝对抗中的最佳实践,助力企业构建安全可靠…...
Docker容器使用手册
Docker是一种轻量级、可移植、自给自足的软件运行环境,用于打包和运行应用程序。它允许开发者将应用及其所有依赖打包成一个镜像(Image),然后基于这个镜像创建出容器(Container)来运行。与虚拟机相比不需要…...

深入解析C++引用:从别名机制到函数特性实践
1.C引用 1.1引用的概念和定义 引用不是新定义⼀个变量,而是给已存在变量取了⼀个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同⼀块内存空间。比如四大名著中林冲,他有一个外号叫豹子头,类比到C里就…...
Fuse.js:打造极致模糊搜索体验
Fuse.js 完全学习指南:JavaScript模糊搜索库 🎯 什么是 Fuse.js? Fuse.js 是一个轻量、强大且无依赖的JavaScript模糊搜索库。它提供了简单而强大的模糊搜索功能,可以在任何 JavaScript 环境中使用,包括浏览器和 Nod…...
MyBatis分页插件(以PageHelper为例)与MySQL分页语法的关系
MyBatis分页插件(以PageHelper为例)与MySQL分页语法关系总结 MyBatis的分页插件(如PageHelper)底层实现依赖于数据库的分页语法。对于MySQL数据库来说,其分页逻辑最终会转化为LIMIT语句,下面展开详细说明&…...
CentOS 7.9 安装 宝塔面板
在 CentOS 7.9 上安装 宝塔面板(BT Panel) 的完整步骤如下: 1. 准备工作 系统要求: CentOS 7.x(推荐 7.9)内存 ≥ 1GB(建议 2GB)硬盘 ≥ 20GBroot 权限(需使用 root 用户…...
使用Redis作为缓存优化ElasticSearch读写性能
在现代数据密集型应用中,ElasticSearch凭借其强大的全文搜索能力成为许多系统的首选搜索引擎。然而,随着数据量和查询量的增长,ElasticSearch的读写性能可能会成为瓶颈。本文将详细介绍如何使用Redis作为缓存层来显著提升ElasticSearch的读写…...

项目交付后缺乏回顾和改进,如何持续优化
项目交付后缺乏回顾和改进可通过建立定期回顾机制、实施反馈闭环流程、开展持续学习和培训、运用数据驱动分析、培养持续改进文化来持续优化。 其中,实施反馈闭环流程尤其重要,它能够确保反馈信息得到有效传递、处理与追踪,形成良好的改进生态…...

从0开始学习R语言--Day15--非参数检验
非参数检验 如果在进行T检验去比较两组数据差异时,假如数据里存在异常值,会把数据之间的差异拉的很大,影响正常的判断。那么这个时候,我们可以尝试用非参数检验的方式来比较数据。 假设我们有A,B两筐苹果,…...
Linux或者Windows下PHP版本查看方法总结
确定当前服务器或本地环境中 PHP 的版本,可以通过以下几种方法进行操作: 1. 通过命令行检查 这是最直接且常用的方法,适用于本地开发环境或有 SSH 访问权限的服务器。 方法一:php -v 命令 php -v输出示例:PHP 8.1.12 (cli) (built: Oct 12 2023 12:34:56) (NTS) Copyri…...

EC2 实例详解:AWS 的云服务器怎么玩?☁️
弹性计算、灵活计费、全球可用,AWS EC2 全攻略 在 AWS 生态中,有两个核心服务是非常关键的,一个是 S3(对象存储),另一个就是我们今天的主角 —— Amazon EC2(Elastic Compute Cloud)…...

第三发 DSP 点击控制系统
背景 在第三方 DSP 上投放广告,需要根据 DP Link 的点击次数进行控制。比如当 DP Link 达到 5000 后,后续的点击将不能带来收益,但是后续的广告却要付出成本。因此需要建立一个 DP Link 池,当 DP Link 到达限制后,…...
saveOrUpdate 有个缺点,不会把值赋值为null,解决办法
针对 MyBatis-Plus 的 saveOrUpdate 方法无法将字段更新为 null 的问题,这是因为 MyBatis-Plus 默认会忽略 null 值字段。以下是几种解决方案: 方案 1:使用 update(entity, wrapper) 手动指定更新条件 原理:通过 UpdateWrapper …...
Java面试:企业协同SaaS中的技术挑战与解决方案
Java面试:企业协同SaaS中的技术挑战与解决方案 面试场景 在一家知名互联网大厂,面试官老王正在对一位应聘企业协同SaaS开发职位的程序员谢飞机进行技术面试。 第一轮提问:基础技术 老王:谢飞机,你好。首先…...